"""
MeanShift-Kalman目标跟踪系统主程序

该程序实现了基于MeanShift算法和Kalman滤波器相结合的目标跟踪系统。
通过图形界面提供视频加载、目标选择、跟踪控制等功能。

主要特性：
1. 融合MeanShift和Kalman滤波器算法
2. 直观的图形用户界面
3. 实时跟踪性能显示
4. 参数动态调整
5. 跟踪结果可视化

使用方法：
1. 运行程序：python main.py
2. 加载视频文件
3. 用鼠标选择目标区域
4. 点击开始跟踪
5. 可实时调整算法参数

作者：目标跟踪系统开发团队
日期：2024
版本：1.0
"""

import sys
import os
from PyQt5.QtWidgets import QApplication, QMessageBox
from PyQt5.QtCore import Qt

# 添加项目路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from src.gui.main_window import MainWindow


def main():
    """
    主函数
    
    初始化应用程序并启动主窗口。
    """
    try:
        # 创建应用程序实例
        app = QApplication(sys.argv)
        
        # 设置应用程序属性
        app.setApplicationName("MeanShift-Kalman目标跟踪系统")
        app.setApplicationVersion("1.0")
        app.setOrganizationName("目标跟踪系统开发团队")
        
        # 设置高DPI支持
        app.setAttribute(Qt.AA_EnableHighDpiScaling, True)
        app.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
        
        # 创建主窗口
        main_window = MainWindow()
        
        # 显示主窗口
        main_window.show()
        
        # 启动应用程序事件循环
        sys.exit(app.exec_())
        
    except ImportError as e:
        print(f"导入错误: {e}")
        print("请确保已安装所有必需的依赖包：")
        print("pip install -r requirements.txt")
        sys.exit(1)
        
    except Exception as e:
        print(f"程序启动失败: {e}")
        
        # 如果GUI可用，显示错误对话框
        try:
            app = QApplication(sys.argv)
            QMessageBox.critical(None, "错误", f"程序启动失败:\n{e}")
        except:
            pass
            
        sys.exit(1)


if __name__ == "__main__":
    main() 